[package]
name = "kernel"
version = "0.3.4"
build = "build.rs"
edition = "2018"

[lib]
name = "kernel"
path = "src/lib.rs"
crate-type = ["staticlib"]

[build-dependencies]
cc = "1.0.3"
rustc-cfg = "0.3.0"

[dependencies]
bitflags = "1.2.1"
bitfield = "0.13.2"
linked_list_allocator = "0.9.0"
log = "0.4"
memoffset = { version = "0.6", features = ["unstable_const"] }
redox_syscall = { path = "syscall" }
slab_allocator = { path = "slab_allocator", optional = true }
# FIXME: There is some undefined behavior probably in the kernel, which forces us to use spin 0.9.0 and not 0.9.2.
spin = "=0.9.0"
rmm = { path = "rmm", default-features = false }

[dependencies.goblin]
version = "0.2.1"
default-features = false
features = ["elf32", "elf64"]

[dependencies.rustc-demangle]
version = "0.1.16"
default-features = false

[target.'cfg(target_arch = "aarch64")'.dependencies]
byteorder = { version = "1", default-features = false }
fdt = { git = "https://gitlab.redox-os.org/thomhuds/fdt.git", default-features = false }
paste = "1.0.7"

[target.'cfg(any(target_arch = "x86", target_arch = "x86_64"))'.dependencies]
raw-cpuid = "10.2.0"
x86 = { version = "0.47.0", default-features = false }

[features]
default = ["acpi", "multi_core", "graphical_debug", "serial_debug"]
acpi = []
doc = []
graphical_debug = []
lpss_debug = []
multi_core = ["acpi"]
#TODO: remove when threading issues are fixed
pti = []
qemu_debug = []
serial_debug = []
system76_ec_debug = []
slab = ["slab_allocator"]

# TODO: Either wait for LLVM 12 and use target_feature, or use another system for cpu features
x86_fsgsbase = []

[profile.dev]
# Kernel doesn't yet work great with debug mode :(
opt-level = 3

[profile.release]
lto = true
